#include <algorithm>  // std::mismatch
#include <functional> // std::not2, std::equal_to
#include <iostream>   // std::cout
#include <utility>    // std::pair

int main() {
  int foo[] = {10, 20, 30, 40, 50};
  int bar[] = {0, 15, 30, 45, 60};
  std::pair<int *, int *> firstmatch, firstmismatch;
  firstmismatch = std::mismatch(foo, foo + 5, bar, std::equal_to<int>());
  firstmatch =
      std::mismatch(foo, foo + 5, bar, std::not2(std::equal_to<int>()));
  // 在foo 指向的内容范围查找和bar中不匹配的元素
  std::cout << "第一个不匹配的索引： " << *firstmismatch.first
            << " 不匹配的值：" << *firstmismatch.second << '\n'; // 0
  std::cout << "第一个匹配的索引：" << *firstmatch.first << " 匹配的值为："
            << *firstmatch.second << '\n'; // 30
  return 0;
}
